This application pertains to the problem of flexibly and efficiently controlling the access rights of a large number of users to a large number of objects or other data entities. The problem arises, for example, in the context of a large number of users sharing access to a database management system on a network in which end users are given differing levels of access to different entities in the managed database. These entities represent the content of the network, as seen by end users. The entities may include, for example, data files, image files, sound files, multimedia files, client account information, etc.
The need to assign user-specific access rights to different entities arises in a variety of situations. For example, it may be desirable to give some users read/write access to certain entities, meaning that these users can replace data representing the entity, while others users may be limited to read-only access, meaning that these users can view the data but not alter or delete the data representing the entity. Some users may not be given any access to certain critical entities.
Various techniques are known in the art for controlling user accesses to objects and other data entities. One technique, which is commonly used in file systems, involves the storage of an access control list (ACL) for each data entity to which access is to be controlled. The ACL for a given data entity will typically be in the form of a list of the users or groups that have access to the data entity, together with the access rights or privileges of each such user or group with respect to the data entity. The organizing of users into groups simplifies the maintenance of an ACL, especially where a large number of users share the same set of access privileges. Such a group, for example, would be a public access group which would normally have limited, read-only access privileges. A user may, however, belong to a group with which many privileges are shared with other users, but where the user has some additional privileges or restrictions than the associated group. In such cases, the ACL can contain a user privilege that overrides the group privilege for particular database entities.
Each time a user requests access to an entity, a content management system (CMS) operating with or within the database management system will search the data entity's ACL to determine whether the user has been given user-specific privileges with respect to the requested entity. If the user has not been assigned user-specific privileges, the CMS may have to then search the ACL to determine group membership for the user, and then find the group privileges with respect to the requested entity.
With the increasing popularity and importance of networked resources it has become increasingly important to be able to provide rapid privilege determination to large numbers of users with controlled access to large numbers of content entities, particularly in high volume transaction environments. To provide flexibility, it is desirable to be able to individualize the access rights of users, and still provide a high performance run-time resolution of the user's privileges.
Although prior art access control techniques such as those summarized above are suitable in theory for flexibly controlling user access to large-scale networked databases, these techniques tend to take unacceptably long periods of time to search because of the number of searches that must be performed to resolve both group and individual user privileges.
A need thus exists in the art for a high performance run-time technique that is suitable for flexibly controlling the access of a large number of users and groups to data entities. A need also exists to be able to flexibly and efficiently define new types of access privileges as new users and groups are added to, or deleted from the system.
The embodiments of the claimed invention therefore provide solutions to the aforementioned problems, and offer other advantages over the prior art.